package AttributeThreading;

/**
 *  Thread 的几个常见属性 :
 * ID  getId()                 名称   getName()
 * 状态   getState()             优先级  getPriority()
 * 是否后台线程   isDaemon()      是否存活     isAlive()
 * 是否被中断   isInterrupted()
 *
 * Date: 2022-09-11   8月13日的课程
 * Time: 0:36
 */
public class TestDemo8 {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            while(true) {
                System.out.println("hello");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        },"李家强的线程");

        thread.start();

        System.out.println("ID: " + thread.getId());
        System.out.println("名称: " + thread.getName());
        System.out.println("状态: " + thread.getState()); // 后续详细说 TestDemo13中详细介绍
        System.out.println("优先级: " + thread.getPriority());
        System.out.println("是否后台线程: " + thread.isDaemon());

        System.out.println("是否存活: " + thread.isAlive()); //判断内核的线程在不在.
        // 这是因为 Thread对象 虽然是和内核中的线程一一对应的, 但是生命周周期并非完全相同~~
        // Thread对象 出来了, 内核中的线程还不一定有, 调用了start方法才会有~(调用start才会真正创建线程!!)
        // 当内核的线程执行完了(run跑完了), 内核中的线程就销毁了, 但Thread对象 还在!!

        System.out.println("是否被中断: " + thread.isInterrupted()); // 后续详细说 TestDemo10 中介绍

    }
}
